# 基于最新版的Ubuntu官方镜像构建开发环境
FROM ubuntu:latest

# 避免安装过程中的交互式提示（防止构建中断）
ENV DEBIAN_FRONTEND=noninteractive

# 更新apt软件源索引并安装基本开发和调试工具
# 使用单个RUN命令减少镜像层数，优化镜像大小
RUN apt-get update && apt-get install -y \
    curl \                
    wget \                
    git \                 
    iputils-ping \        
    tree \                
    gnupg \               
    ca-certificates \     
    apt-transport-https \ 
    software-properties-common \ 
    lsb-release \         
    vim \                 
    && rm -rf /var/lib/apt/lists/* 

# 安装Node.js LTS版本
# 步骤：1.添加NodeSource官方仓库 2.安装Node.js 3.更新npm到最新版本
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g npm@latest

# 安装pnpm包管理器（比npm更快且高效的包管理器）
RUN npm install -g pnpm@latest

# 设置PNPM_HOME环境变量并添加到PATH
ENV PNPM_HOME=/root/.local/share/pnpm
ENV PATH=$PNPM_HOME:$PATH
RUN mkdir -p $PNPM_HOME

# 安装NestJS命令行工具（用于创建和管理NestJS应用）
RUN pnpm add -g @nestjs/cli

# 安装TypeScript（JavaScript的超集，增加了类型系统）
RUN pnpm add -g typescript

# 安装MongoDB数据库（8.0最新稳定版本）
# 使用官方推荐的最新安装方式
RUN curl -fsSL https://pgp.mongodb.com/server-8.0.asc | \
   gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
   --dearmor && \
   echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | \
   tee /etc/apt/sources.list.d/mongodb-org-8.0.list && \
   apt-get update && \
   apt-get install -y mongodb-org && \
   mkdir -p /data/db && \
   chmod -R 777 /data/db

# 清理apt缓存，减小最终镜像体积
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# 设置容器默认工作目录为通用路径
# 具体项目路径将由VS Code动态挂载到/workspaces/${localWorkspaceFolderBasename}
WORKDIR /workspaces

# 恢复默认交互模式（仅用于构建后的交互）
ENV DEBIAN_FRONTEND=dialog

# 复制启动脚本到容器，并赋予执行权限
COPY .devcontainer/startup.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/startup.sh

# 设置容器启动时执行的默认命令（运行启动脚本）
CMD ["/usr/local/bin/startup.sh"] 